const express = require('express')
const app = express()

app.use(require('cors')())  //跨域问题
app.use(express.json())  //表示识别客户端发来的json请求
const mongoose = require('mongoose') //引入mongoose包
mongoose.connect('mongodb://localhost:27017/element-admin', {
  useNewUrlParser: true,
  useFindAndModify: true,
  useCreateIndex: true,
  useUnifiedTopology: true,
})  //连接mongodb数据库
// 数据库建模  new mongoose.Schema定义数据库字段
const Article = mongoose.model('Article', new mongoose.Schema({
  title: { type: String },
  body: {type: String},
}))
// get一般用于展示数据
app.get('/', async (req, res) => {
  res.send('index')
})
// post一般用于录入数据
// 新增文章 添加api前缀是为了方便识别接口
app.post('/api/articles', async (req, res) => {
  const article = await Article.create(req.body)   //一旦用到req.body,我们需要引入express.json()
  res.send(article)
})
//文章列表接口
app.get('/api/articles', async(req, res) => {
  const articles = await Article.find()
  res.send(articles)
})
//删除文章
app.delete('/api/articles/:id', async (req, res) => {
  await Article.findByIdAndDelete(req.params.id)
  res.send({
    status: true
  })
})
//文章详情
app.get('/api/articles/:id', async (req, res) => {
  const article = await Article.findById(req.params.id)
  res.send(article)
})
//修改文章
app.put('/api/articles/:id', async (req, res) => {
  const article = await Article.findByIdAndUpdate(req.params.id, req.body)   //findByIdAndUpdate方法接收两个参数一个是id，第二个是请求体也就是req.body
  res.send(article)
})
app.listen(3001, () => {
  console.log('http://localhost:3001/');
})